<?php
/**
 * Created by PhpStorm.
 * User: cnpscy
 * Date: 2020/7/7
 * Time: 23:00
 * Note: Admins.php
 */

namespace App\Model\Rabc;

use App\Model\BaseModel;

class Admin extends BaseModel
{
    /**
     * 登录之后，生成Token
     *
     * @param object $admin
     *
     * @return string
     */
    public function getTokenByJwt(object $admin): string
    {
        $config    = \EasySwoole\EasySwoole\Config::getInstance();
        $jwtConfig = $config->getConf('JWT');

        $jwtObject = \EasySwoole\Jwt\Jwt::getInstance()
            ->setSecretKey($jwtConfig['key'])// 秘钥
            ->publish();

        $jwtObject->setAlg('HMACSHA256'); // 加密方式
        $jwtObject->setAud($admin->admin_name); // 用户
        $jwtObject->setExp(time() + $jwtConfig['exp']); // 过期时间
        $jwtObject->setIat(time()); // 发布时间
        $jwtObject->setIss($jwtConfig['iss']); // 发行人
        $jwtObject->setJti(md5(time())); // jwt id 用于标识该jwt
        $jwtObject->setNbf(time()); // 在此之前不可用
        $jwtObject->setSub($jwtConfig['sub']); // 主题

        // 自定义数据
        $jwtObject->setData([
            'admin_id' => $admin->admin_id
        ]);

        // 最终生成的token
        return $token = $jwtObject->__toString();
    }


    /**
     * $value mixed 是原值
     * $data  array 是当前model所有的值
     */
    protected function setPasswordAttr($value, $data)
    {
        return hash_encryption($value);
    }

    protected static function onBeforeInsert($model)
    {

    }

    protected static function onAfterInsert($model, $res)
    {
        if (!isset($model->password) || empty($model->password)) {
            $model->password = 123456;
            $model->save();
        }
    }

    protected static function onBeforeUpdate($model)
    {

    }

    protected static function onAfterUpdate($model, $res)
    {

    }

    protected static function onBeforeDelete($model)
    {

    }

    public static function onAfterDelete($model, $res)
    {

    }
}